当前位置: 首页 > wzjs >正文

天长网站制作沈阳优化网站公司

天长网站制作,沈阳优化网站公司,怎么做公众号微信,网站代码开发方式目录 一、成员函数 1.1 成员函数的概念 1.2 成员函数的定义 1.2.1 类内定义(内联函数) 1.2.2 类外定义 1.3 成员函数的调用 输出结果 二、访问权限控制 2.1 访问修饰符的作用 2.2 访问权限的控制规则 2.3 示例代码 三、内联函数(…

目录

一、成员函数

1.1 成员函数的概念

1.2 成员函数的定义

1.2.1 类内定义(内联函数)

1.2.2 类外定义

1.3 成员函数的调用

输出结果

二、访问权限控制

2.1 访问修饰符的作用

2.2 访问权限的控制规则

2.3 示例代码

三、内联函数(Inline Functions)

3.1 内联函数的概念

3.2 显式内联函数

输出结果

四、友元(Friend)

4.1 友元函数

输出结果

4.2 友元类

五、封装性与访问权限设计

5.1 封装性原则

5.2 示例代码

输出结果

六、访问权限在继承中的行为

6.1 继承中的访问权限

6.2 示例代码

七、常见错误与注意事项

7.1 访问权限错误

7.2 友元关系错误

八、总结

8.1 核心要点

8.2 设计原则


C++从入门到入土学习导航_c++学习进程-CSDN博客

一、成员函数

1.1 成员函数的概念

  • 成员函数member function)是类中定义的函数,用于操作类的数据成员或实现类的行为。
  • 特点
    • 可以直接访问类的所有数据成员(包括 private 和 public)。
    • 支持在类内定义(内联函数)或类外定义。
    • 可以被对象调用(通过 . 或 -> 操作符)。

1.2 成员函数的定义

1.2.1 类内定义(内联函数)
  • 语法
    class ClassName {
    public:void memberFunction() {// 函数体}
    };
  • 特点
    • 自动被视为内联函数(inline),减少函数调用的开销。
    • 适用于简单逻辑的函数。
1.2.2 类外定义
  • 语法
    class ClassName {
    public:void memberFunction(); // 声明
    };// 定义
    void ClassName::memberFunction() {// 函数体
    }
  • 特点
    • 需要显式使用作用域解析运算符 ::
    • 如果需要内联,需显式添加 inline 关键字。

1.3 成员函数的调用

  • 语法

    ClassName obj;
    obj.memberFunction(); // 通过对象调用
  • 示例

    #include <iostream>
    using namespace std;class Rectangle {
    private:int width, height;
    public:void setDimensions(int w, int h) {width = w;height = h;}int area() {return width * height;}
    };int main() {Rectangle rect;rect.setDimensions(5, 10);cout << "Area: " << rect.area() << endl;return 0;
    }
输出结果
Area: 50

二、访问权限控制

2.1 访问修饰符的作用

  • public:成员可在类内部、外部和派生类中访问。
  • private:成员只能在类内部访问。
  • protected:成员可在类内部和派生类中访问,但不能在类外部直接访问。

2.2 访问权限的控制规则

访问修饰符类内部类外部派生类
public
private
protected

2.3 示例代码

#include <iostream>
using namespace std;class MyClass {
private:int privateData;
protected:int protectedData;
public:int publicData;void accessAll() {privateData = 1;       // ✅ 允许访问protectedData = 2;     // ✅ 允许访问publicData = 3;        // ✅ 允许访问}
};int main() {MyClass obj;obj.publicData = 10;       // ✅ 允许访问// obj.protectedData = 20; // ❌ 错误:protected 成员不可访问// obj.privateData = 30;   // ❌ 错误:private 成员不可访问return 0;
}

三、内联函数(Inline Functions)

3.1 内联函数的概念

  • 内联函数是编译器优化的一种方式,通过将函数体直接嵌入调用点来减少函数调用的开销。
  • 特点
    • 适用于短小、频繁调用的函数。
    • 类内定义的成员函数默认为内联函数。

3.2 显式内联函数

  • 语法

    inline void myFunction() {// 函数体
    }
  • 示例

    #include <iostream>
    using namespace std;class MathUtils {
    public:inline int add(int a, int b) {return a + b;}
    };int main() {MathUtils mu;cout << "Sum: " << mu.add(5, 7) << endl;return 0;
    }
输出结果
Sum: 12

四、友元(Friend)

4.1 友元函数

  • 用途:允许非成员函数访问类的 privateprotected 成员。

  • 语法

    class MyClass {friend void friendFunction(MyClass& obj);
    private:int secret;
    };
  • 示例

    #include <iostream>
    using namespace std;class MyClass {friend void displaySecret(MyClass& obj); // 声明友元函数
    private:int secret = 42;
    };void displaySecret(MyClass& obj) {cout << "Secret: " << obj.secret << endl; // ✅ 允许访问
    }int main() {MyClass obj;displaySecret(obj);return 0;
    }
输出结果
Secret: 42

4.2 友元类

  • 用途:允许一个类访问另一个类的 private 或 protected 成员。
  • 语法
    class FriendClass {void accessPrivate();
    };class MyClass {friend class FriendClass; // 声明友元类
    private:int secret = 42;
    };void FriendClass::accessPrivate() {MyClass obj;cout << "Secret: " << obj.secret << endl; // ✅ 允许访问
    }

五、封装性与访问权限设计

5.1 封装性原则

  • 数据隐藏:将数据成员声明为 private,通过 public 的 getter 和 setter 方法访问。
  • 接口设计:将对外提供的功能声明为 public,内部实现细节隐藏为 private

5.2 示例代码

#include <iostream>
using namespace std;class BankAccount {
private:double balance;
public:BankAccount(double initialBalance) : balance(initialBalance) {}// 设置余额(验证输入)void setBalance(double amount) {if (amount >= 0) {balance = amount;} else {cout << "Invalid amount!" << endl;}}// 获取余额double getBalance() const {return balance;}// 存款void deposit(double amount) {if (amount > 0) {balance += amount;} else {cout << "Invalid deposit amount!" << endl;}}// 取款void withdraw(double amount) {if (amount > 0 && amount <= balance) {balance -= amount;} else {cout << "Invalid withdrawal amount!" << endl;}}
};int main() {BankAccount account(1000);account.deposit(500);account.withdraw(200);cout << "Final Balance: " << account.getBalance() << endl;return 0;
}
输出结果
Final Balance: 1300

六、访问权限在继承中的行为

6.1 继承中的访问权限

  • public 继承:基类的 public 成员在派生类中仍为 publicprotected 成员变为 protected
  • protected 继承:基类的 public 和 protected 成员在派生类中均为 protected
  • private 继承:基类的 public 和 protected 成员在派生类中均为 private

6.2 示例代码

#include <iostream>
using namespace std;class Base {
public:void publicFunc() { cout << "Base::publicFunc" << endl; }
protected:void protectedFunc() { cout << "Base::protectedFunc" << endl; }
private:void privateFunc() { cout << "Base::privateFunc" << endl; }
};// public 继承
class DerivedPublic : public Base {
public:void access() {publicFunc();       // ✅ 允许访问protectedFunc();    // ✅ 允许访问// privateFunc();   // ❌ 错误:private 成员不可访问}
};// private 继承
class DerivedPrivate : private Base {
public:void access() {publicFunc();       // ✅ 允许访问(在派生类中变为 private)protectedFunc();    // ✅ 允许访问(在派生类中变为 private)// privateFunc();   // ❌ 错误:private 成员不可访问}
};

七、常见错误与注意事项

7.1 访问权限错误

  • 错误示例
    class MyClass {
    private:int secret;
    };int main() {MyClass obj;obj.secret = 10; // ❌ 错误:secret 是 private 成员return 0;
    }

7.2 友元关系错误

  • 错误示例
    class A {friend class B; // A 允许 B 访问其私有成员
    };class B {friend class C; // C 无法直接访问 A 的私有成员
    };class C {void accessA(A& a) {// a.secret = 10; // ❌ 错误:C 无法访问 A 的私有成员}
    };

八、总结

8.1 核心要点

  • 成员函数是类的核心,用于定义类的行为。
  • 访问权限public/private/protected)控制成员的可访问范围。
  • 内联函数可以提高性能,适用于简单逻辑。
  • 友元机制允许非成员函数或类访问私有成员,但需谨慎使用。
  • 封装性是面向对象设计的核心,应将数据成员设为 private,通过 public 接口操作。

8.2 设计原则

  • 最小化暴露:仅将必要的成员声明为 public
  • 优先使用 class:默认访问权限为 private,更符合面向对象设计。
  • 合理使用友元:避免过度依赖,破坏封装性。
http://www.dtcms.com/wzjs/250408.html

相关文章:

  • 网站建设模板百度竞价排名
  • 做网站写的代号好跟不好的区别中国新闻网最新消息
  • 国家税务总局网上举报广州网站制作实力乐云seo
  • 网页制作与设计中什么是div重庆百度推广seo
  • 山东住房建设部官方网站seo技术交流
  • 深圳市门户网站建设哪家好网络推广网站推广淘宝运营商
  • 上海公司注册联贝财务优势徐州关键词优化排名
  • 露天做愛偷拍网站营销网页设计公司
  • 做网站软件有哪些网络营销的概念
  • seo综合查询 站长工具seo实战教程
  • 广东网站建设微信官网开发网站免费制作平台
  • 网络营销者的应聘要求seo工作
  • 有免费网站服务器吗十大跨界营销案例
  • 把网站做到wordpress里面去浙江关键词优化
  • 合肥瑶海区教育局官网seo是什么单位
  • 网站为何要屏蔽百度蜘蛛app推广注册赚钱
  • 凡科做网站要钱百度搜索推广官网
  • 技术支持 合肥网站建设推广赚钱的微信小程序
  • 用asp.net做的网站模板什么是营销
  • 做网站一定要代码吗2024年新闻摘抄
  • web网站开发的参考文献店铺seo是什么意思
  • 网络规划设计包括哪些内容长沙seo免费诊断
  • 厦门外贸网站建设友链对网站seo有帮助吗
  • 怎样做知道网站百度营销推广
  • 专门做外国的网站有哪些营销官网
  • 意大利语网站建设sem账户托管公司
  • 丹江口网站开发seo排名优化代理
  • axure 做网站原型优化设计三年级上册答案语文
  • 做网站买空间举三个成功的新媒体营销案例
  • 建设一个网站需要的条件怎么做小说推广挣钱