-
拷貝構(gòu)造函數(shù)定義格式:類名(const 類名&變量名)
class?Student {public:Student(){m_strName?=?"Jim";}??????? ????????Student(const?Student?&stu){}? //拷貝構(gòu)造函數(shù)在名稱上一樣,但是在參數(shù)設(shè)計(jì)上卻不同 //const?+引用???? private:string?m_strName;}
如果沒有自定義的拷貝構(gòu)造函數(shù),則系統(tǒng)自動生成一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù).當(dāng)采用直接初始化或復(fù)制初始化實(shí)例化對象時(shí),系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)
查看全部 -
初始化列表編碼:
//Teacher.h文件 #include<iostream> #include<string> using?namespace?std; class?Teacher {publlic:Teacher(string?name?=?"Tom",int?age?=?5?,int?m?=?100); ?????????void?setName(string?name); ?????????sting?getName(); ?????????void?setAge(int?Age); ?????????int?getAge(); ?????????int?getMax(); ?private:?string?m_strName; ??????????int?m_iAge;? ??????????const?int?m_iMax;? }
//Teacher.cpp文件 #include"Teacher.h" Teacher::Teacher(string?name,int?age,int?m):m_strName(name),m_iAge(age),m_iMax(m) {cout<<"Teacher(string?name,int?age,int?m)"<<endl; } //構(gòu)造函數(shù)名需與類名一致 int?Teacher::getMax() {return?m_iMax;}
調(diào)用初始化列表編碼:
//demo.cpp文件 #include<stdlib.h> #include<iostreaam> #include<string> #include"Teacher.h" int?main(void) {Teacher?t1;//實(shí)例化對象 ?cout<<t1.getName()<<"?"<<t1.getAge()<<"?"<<t1.getMax()<<endl; }
查看全部 -
初始化列表的存在的必要性:可以對const常量初始化
初始化列表的特性:
初始化列表先于構(gòu)造函數(shù)執(zhí)行
初始化列表只能用于構(gòu)造函數(shù)
初始化列表可以同時(shí)初始化多個(gè)數(shù)據(jù)成員
查看全部 -
#include"Teacher" #include<string>
無參構(gòu)造函數(shù):
Teacher::Teacher() {?m_strName?=?"Jerrry"; ??m_iAge?=?5: ??cout<<Teacher()<<endl; }
含參構(gòu)造函數(shù):
Teacher::Teacher(string?name,?int?age) {m_strName?=?name; ?m_iAge?=?age; ?cout<<Teacher(string?name,int?age)<<endl; }
調(diào)用無參構(gòu)造函數(shù):
Teacher?T1; cout<<T1.getName()<<"?"<<T1.getAge()<<endl;
調(diào)用含參構(gòu)造函數(shù):
Teacher?T2("Tom",18); cout<<T2.getName()<<"?"<<T2.getAge()<<endl;
查看全部 -
構(gòu)造函數(shù)的規(guī)則和特點(diǎn):
1、構(gòu)造函數(shù)在對象實(shí)例化時(shí)被自動調(diào)用(有且僅有一次);
2、構(gòu)造函數(shù)與類同名;
3、構(gòu)造函數(shù)沒有返回值(連 void 都不用寫);
4、構(gòu)造函數(shù)可以有多個(gè)重載形式(遵循重載規(guī)則,參數(shù)個(gè)數(shù)、類型、調(diào)用順序不同等);
5、即使有多個(gè)構(gòu)造函數(shù),實(shí)例化對象時(shí)僅用到一個(gè)構(gòu)造函數(shù);
6、用戶沒有定義構(gòu)造函數(shù)時(shí),編譯器自動生成一個(gè)構(gòu)造函數(shù)。
內(nèi)存分區(qū)
棧區(qū):定義變量。內(nèi)存由系統(tǒng)進(jìn)行控制,釋放和分配
堆區(qū):關(guān)鍵字new,需要程序員自己管理釋放
全局區(qū):全局變量和靜態(tài)變量
常量區(qū):字符串和常量查看全部 -
類的聲明放頭文件.h
類的定義放源文件.cpp
#include<string>#include<iostream>?
?using namespace std;
查看全部 -
類內(nèi)定義的成員函數(shù),編譯器會將其優(yōu)先編譯為內(nèi)聯(lián)函數(shù)。
對于復(fù)雜的成員函數(shù),則編譯為普通的函數(shù)。
類外定義的成員函數(shù)的格式: 返回類型 類名::函數(shù)名(參數(shù)列表)
分文件類外定義:
定義一個(gè)類名.h的頭文件,用來保存類的定義;
定義一個(gè)類名.cpp的文件,用來保存類中成員函數(shù)的定義,定義之前要加上#include "類名.h"查看全部 -
類的寫法是public寫在前面,private寫在后面
定義私有成員: m_數(shù)據(jù)類型+成員名。如:string m_strName
//以便區(qū)分?jǐn)?shù)據(jù)成員,知道數(shù)據(jù)成員是定義在類里面的
形參:_+成員名。如:void getName(string _name)只讀:初始化,只有g(shù)et函數(shù),不設(shè)置set函數(shù)。
查看全部 -
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std ;
class student
{
public:
?void? setName(string _name)? //傳入學(xué)生名形參
?? {
?m_strName = _name;??? //設(shè)置學(xué)生名
?? }
????? string getName()
?? {
?? return m_strName;? //取得學(xué)生名
?? }? void setGender(string _gender)? //傳入學(xué)生性別形參
? {
?? m_strGender = _gender;? //設(shè)置學(xué)生性別
? }
? string getGender()
? {
?? return m_strGender;? //取得學(xué)生性別
? }
? int getScore()
? {
?? return m_iScore;? //設(shè)置只讀學(xué)分
?}? void initScore()
? {
?? m_iScore = 0;? //初始化學(xué)生學(xué)分
? }
? void study(int _score)
? {
?? m_iScore += _score;? //累加學(xué)生獲得學(xué)分
?? //m_iScore = m_iScore + _score;
?}private:
?string m_strName;
?string m_strGender;
?int m_iScore;
};
int main(void)
{
?student stu;
?stu.initScore();
?stu.setName("zhangsan");
?stu.setGender("男");
?stu.study(5);
?stu.study(7);?cout << stu.getName() << "? " << stu.getGender() << "? " << stu.getScore() << endl;
?system("pause");
?return 0;
}查看全部 -
封裝的好處:
1.方便設(shè)置條件
2.方便讀寫權(quán)限查看全部 -
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std ;int main(void)
{??? string name;
??? cout << "please input your name:";
??? getline(cin, name);
??? if (name.empty())
??? {
???? cout << "input is null..." << endl;
???? system("pause");
???? return 0;
??? }
??? if (name == "imooc")
??? {
???? cout << "you are Administrator" << endl;
??}
??? cout << "hello? " + name << endl;
??? cout << "your name length is :" << name.size() << endl;
??? cout << "your name first letter is:" << name[0] << endl;system("pause");
?return 0;
}查看全部 -
?從棧中實(shí)例化 :
Coordinate?coor;?coor.x=10;?coor.y=20;
棧中實(shí)例化之后內(nèi)存自動清除。
從堆中實(shí)例化
?Coordinate?*p=new?Coordinate();??p->x=100;?p->y=200;
堆中實(shí)例化不一定成功,所以需要判斷一下:
if(p==NULL){?return?0;}
? 堆中實(shí)例化之后需要清除內(nèi)存,即:
delete?p;p=NULL;
查看全部 -
類的定義
1、關(guān)鍵字、類名
2、屬性(分為公共的和私有的)、數(shù)據(jù)成員
3、方法、成員函數(shù)
查看全部 -
初始化列表的存在的必要性,可以對const常量初始化
查看全部 -
初始化列表的賦值方法
查看全部
舉報(bào)