#include<iostream>
#include<string>
using namespace std;
class Dog
{
public:
void printdata()
{
cout << dogName << "\t" << dogAge << endl;
}
void initdata(string name, int age);//注意此处的类内外函数实现同上次课的结构体
int& initage()
{
return dogAge;
}//不失为一个访问的好接口
protected:
string dogName;
int dogAge;
private:
//若类不做继承处理,就把属性写成私有的属性
};
//类内声明,类外实现,实际上是结果一样的。
void Dog::initdata(string name, int age)//加上类名限定,告诉这个是来源哪
{//就像提供了一个接口一样
dogName = name;
dogAge = age;
}
int main()
{
Dog wbm;
wbm.initdata("狗子", 19);
wbm.printdata();
}
①权限限定仅类外才会收到阻碍!!
②struct在某种程度上就是类,只不过默认属性是public 可以再去自己加protected,private.
③最新的标准允许在类属性的初始化
三种对象 创建方式:
int main()
{
//普通对象
Dog wbm;
wbm.printdata();
//对象数组
Dog wbm2[4];
for (int i = 0; i < 4; i++)
{
wbm2[i].initdata(string("abc") + to_string(i),19+i);
wbm2[i].printdata();
}
//对象指针
Dog* wbm3 = new Dog;
wbm3->initdata("sak", 18);
wbm3->printdata();
delete wbm3;
wbm3 = nullptr;
}
访问对象(初始化):
①利用传参
②利用返回引用
③给定一个初始值在类中。(见上述代码)