C++怎么调用类中的函数

打印 上一主题 下一主题

主题 1784|帖子 1784|积分 5352

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 栈上对象 调用平凡成员方法

平凡成员方法必要通过类的对象实例(或指针、引用)来调用。
示例:

  1. class MyClass {
  2. public:
  3.     void normalMethod() {
  4.         std::cout << "普通成员方法被调用" << std::endl;
  5.     }
  6. };
  7. int main() {
  8.     MyClass obj;         // 创建对象实例
  9.     obj.normalMethod();  // 通过对象调用
  10.     MyClass* ptr = &obj; // 对象指针
  11.     ptr->normalMethod(); // 通过指针调用
  12.     MyClass& ref = obj;  // 对象引用
  13.     ref.normalMethod();  // 通过引用调用
  14. }
复制代码
2. 调用静态成员方法

静态成员方法(static 方法)属于类自己,无需对象实例,可直接通过类名调用。
示例:

  1. class MyClass {
  2. public:
  3.     static void staticMethod() {
  4.         std::cout << "静态方法被调用" << std::endl;
  5.     }
  6. };
  7. int main() {
  8.     MyClass::staticMethod();  // 直接通过类名调用
  9.     MyClass obj;
  10.     obj.staticMethod();       // 也可通过对象调用(不推荐,易混淆)
  11. }
复制代码
3. 堆上对象 调用平凡成员方法

示例:

  1. class MyClass {
  2. public:
  3.     void method() {
  4.         std::cout << "通过指针/引用调用" << std::endl;
  5.     }
  6. };
  7. int main() {
  8.     MyClass* ptr = new MyClass(); // 动态分配对象
  9.     ptr->method();
  10.     delete ptr; // 释放内存
  11.     MyClass obj;
  12.     MyClass& ref = obj;
  13.     ref.method();
  14. }
复制代码
4. 在类内部调用其他方法

类的方法可以直接调用本类的其他成员方法(包罗私有方法)。
示例:

  1. class MyClass {
  2. private:
  3.     void privateMethod() {
  4.         std::cout << "私有方法被调用" << std::endl;
  5.     }
  6. public:
  7.     void publicMethod() {
  8.         privateMethod(); // 直接调用私有方法
  9.     }
  10. };
  11. int main() {
  12.     MyClass obj;
  13.     obj.publicMethod(); // 输出 "私有方法被调用"
  14. }
复制代码
5. 调用常量方法(const 方法)

如果对象是常量(const),只能调用标记为 const 的成员方法。
非常量,只能使用非const 方法
示例:

  1. #include<iostream>
  2. using namespace std;
  3. class MyClass {
  4. public:
  5.     void nonConstMethod() {
  6.         std::cout << "非 const 方法" << std::endl;
  7.     }
  8.     void constMethod() const {
  9.         std::cout << "const 方法" << std::endl;
  10.     }
  11. };
  12. int main() {
  13.     const MyClass constObj;
  14.     MyClass noconstObj;
  15.     // constObj.nonConstMethod(); // 错误:不能调用非 const 方法
  16.     constObj.constMethod();      // 正确:调用 const 方法
  17.     noconstObj.nonConstMethod();  // 正确:调用 非 const 方法
  18.     //noconstObj.ConstMethod();  // 错误:调用 const 方法
  19. }
复制代码
6. 在继承中调用父类方法

子类可以直接调用父类的公有或保护方法。如果方法被重写(override),可通过作用域运算符 :: 显式调用父类版本。
示例:

  1. class Parent {
  2. public:
  3.     void method() {
  4.         std::cout << "父类方法" << std::endl;
  5.     }
  6. };
  7. class Child : public Parent {
  8. public:
  9.     void method() {
  10.         std::cout << "子类方法" << std::endl;
  11.         Parent::method(); // 显式调用父类方法
  12.     }
  13. };
  14. int main() {
  15.     Child obj;
  16.     obj.method(); // 先输出 "子类方法",再输出 "父类方法"
  17. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表