兰州网站建站,网站空间去哪买,小户型室内装修设计公司网站,什么企业的网络营销策略好写在C程序中访问对象的成员变量和成员函数#xff0c;有三种方法#xff1a;
通过对象名和成员运算符访问对象中的成员#xff1b;通过指向对象的指针访问对象中的成员#xff1b;通过对象的引用变量访问对象中的成员 在了解访问对象中成员的3种方法前#xff0c;先了解下C… 在C程序中访问对象的成员变量和成员函数有三种方法
通过对象名和成员运算符访问对象中的成员通过指向对象的指针访问对象中的成员通过对象的引用变量访问对象中的成员 在了解访问对象中成员的3种方法前先了解下C面向对象程序设计的特点。
1、struct和class区别 C增加了class类型后扔保留了结构体类型struct而且把它的功能也扩展了。c允许用struct业定义一个“类”类型。如果struct类体内没用private和public对其成员作显式声明系统将全部成员默认为public公用的外界可以任意引用其中的数据成员和成员函数。代码如下
#include iostream
#include string
using namespace std;struct Student{int age;string name;string sex;// 显示学员信息void display(){cout name: name , age: age , sex: sex;}
};int main(){Student s;s.age 20;s.name Jack;s.sex male;s.display();
} 运行结果如下 如果class类体内没有private和public对其成员作显示声明系统将全部成员默认为private私有的外界不可以任意引用其中的数据成员和成员函数。 所以如果希望成员是公用的使用struct比较方便如果希望部分成员是私有的宜用class。 2、类外定义成员函数 在C中成员函数可以在类体内定义也可以在类体外进行函数定义。在类体内定义函数时不需要在函数名前加上类名因为函数属于哪个类已不言而喻。但成员函数在类外定义时必须在函数名前添加上类名予以限制“::”两个冒号作为作用域限定符用它声明函数是属于类中的函数。代码如下
#include iostream
#include string
using namespace std;class Student{private:int age;string name;string sex;public:// 定义内置函数inline void set_value(){cin name age sex;}// 显示成员信息void display(){cout endl;cout name: name , age: age , sex: sex endl;}string get_name();
};int main(){Student s;s.set_value();s.display();string student_name s.get_name();cout student name: student_name endl;
}string Student::get_name(){return name;
} 3、inline成员函数 类的成员函数也可以指定为内置inline函数。C要求对一般的内置函数要用关键字inline声明但对类内定义的成员函数可以省略inline因为这些成员函数已被隐含地指定为内置函数。代码如下
#include iostream
#include string
using namespace std;class Student{private:int age;string name;string sex;public:// 定义内置函数inline void set_value(){cin name age sex;}// 显示成员信息void display(){cout endl;cout name: name , age: age , sex: sex endl;}
};int main(){Student s;s.set_value();s.display();
} 其实void display()也可以写成inline void display()将display()函数显示地声明为内置函数。不写也是等效的在类体内定义的函数一般都省写inline。 但是如果成员函数不在类体内定义而在类体外定义系统并不把它默认为内置函数调用这些成员函数的过程和调用一般函数的过程是相同的。如果想将这些成员函数指定为内置函数应当用inline作显式声明。代码如下
#include iostream
#include string
using namespace std;class Student{private:int age;string name;string sex;public:// 定义内置函数inline void set_value(){cin name age sex;}// 显示成员信息void display(){cout endl;cout name: name , age: age , sex: sex endl;}inline string get_name();
};int main(){Student s;s.set_value();s.display();string student_name s.get_name();cout student name: student_name endl;
}string Student::get_name(){return name;
} 4、访问对象中的成员 在实际编程中选择使用对象实例、指针对象还是引用变量取决于你的具体需求和场景。
4.1、通过对象名访问成员 对象实例是直接创建的对象。可以直接使用点“.”运算符来访问它的成员成员变量和成员函数。代码如下
#include iostream
#include string
using namespace std;class Student{private:int age;string name;string sex;public:// 定义内置函数inline void set_value(){cin name age sex;}// 显示成员信息void display(){cout endl;cout name: name , age: age , sex: sex endl;}
};int main(){Student s;// 设置对象信息s.set_value();// 显示学员信息s.display();
} 对象名和成员运算符访问对象中的成员用点“.”成员运算符来对成员进行限定和调用可以用.调用对象中所有的公用成员。 4.2、通过对象的指针访问成员 指针对象是一个指向对象的指针。你需要使用-运算符来访问它所指向的对象的成员。指针提供了更多的灵活性比如动态内存分配和对象数组的操作。但使用指针时需要格外小心内存泄漏和野指针等问题。代码如下
#include iostream
#include string
using namespace std;class Student{private:int age;string name;string sex;public:// 定义内置函数inline void set_value(){cin name age sex;}// 显示成员信息void display(){cout endl;cout name: name , age: age , sex: sex endl;}
};int main(){Student s, *p; //定义对象s和指向Student类的指针变量pp s; // 使用p指向对象s// 调用成员p-set_value();p-display();
} 4.3、通过对象的引用访问成员 引用变量是对象的别名。你可以像使用对象实例一样使用.运算符来访问它的成员。引用通常用于函数参数和返回值以避免复制大型对象提高效率。代码如下
#include iostream
#include string
using namespace std;class Student{private:int age;string name;string sex;public:// 定义内置函数inline void set_value(){cin name age sex;}// 显示成员信息void display(){cout endl;cout name: name , age: age , sex: sex endl;}
};int main(){Student s; //定义对象s// 引用变量s2指向对象sStudent s2 s;// 调用成员s2.set_value();s2.display();
} 5、三种方法区别 语法对象实例和引用变量都是使用点.运算符指针对象对象使用-运算符。 灵活性指针对象提供了更多的动态性和灵活性可以使用动态内存分配和复杂的数据结构。引用变量则更侧重于提供对象的别名避免不必要的复制。 安全性使用指针时需要格外小心因为不正确的使用可能导致内存泄露野指针等问题。 用途对象实例通常用于简单的局部变量或对象创建。指针对象常用于动态内存管理、数组、键表等复杂数据结构。引用变量常用于函数参数和返回值以提高效果。