From Java to C,这操作真香

这篇博客对比了C++和Java在函数实现、类的创建与使用、不可继承成员、可选构造参数以及抽象类和单例模式上的异同。详细介绍了两种语言的关键概念,包括栈与堆内存管理,以及如何在不同场景下应用这些概念。此外,还强调了技术提升和“软实力”在职业发展中的重要性。
摘要由CSDN通过智能技术生成

}

/**

  • 函数实现
  • 如果再main方法后实现,必须先声明
  • @return
    */
    void hello(string name) {
    cout << "Hello, " + name + “!”;
    }

方法Return
--------

### Java

public boolean hasItems() {
return true;
}


### C++

bool hasItems() {
return true;
}


单表达式
----

### Java

public double cube(double x) {
return x * x * x;
}


### C++

double cube(double x) {
return x * x * x;
}


类->New
------

### Java

File file = new File(“file.txt”); //对象在堆中,对象引用在栈中


### C++

class Test {
public:
void add() {

}

};

int main() {
Test test1; //栈中分配 ,由操作系统进行内存的分配和管理
Test test1; //加表示为指向Test类对像的指针变量,不加*则为Test类对像
Test *test = new Test(); //堆中分配 ,由管理者进行内存的分配和管理,用完必须delete(),否则可能造成内存泄漏
delete test;
return 0;
}


**注意:栈中内存的分配和管理由操作系统决定,而堆中内存的分配和管理由管理者决定**

类->不可被继承
--------

### Java

public final class User {
}


### C++

//C++11的新特性
class User final {
};


类->不可被继承的成员变量
-------------

### Java

class User {
private final String name;

 public User(String name) {
     this.name = name;
 }

 public String getName() {
     return name;
 }

}


### C++

class User {
private:
const string u_name; // const限制只能被赋值一次
public:
User(string name); // 声明
};

User::User(string name) : u_name(name){}; //实现

int main() {
User user = User(“test”);
return 0;
}


类-> 可选的构造参数
-----------

### Java

final class User {
private String name;
private String lastName;

 public User(String name) {
     this(name, "");
 }

 public User(String name, String lastName) {
     this.name = name;
     this.lastName = lastName;
 }

 // And Getters & Setters

}


### C++

class User {
private:
string u_name;
string u_last_name;
public:
User(string name,string lastName);
};

User::User(string name,string lastName = “1”) : u_name(name) ,u_last_name(lastName){};

int main() {
User user = User(“test”);
User user1 = User(“test”,“1”);
return 0;
}


抽象类
---

### Java

public abstract class Document{
public abstract int calculateSize();
}

public class Photo extends Document{
@Override
public int calculateSize() {

}

}


### C++

/**

  • 抽象类
  • 需要用纯虚函数
  • 纯虚函数是通过在声明中使用 “= 0” 来指定
    */
    class Document{
    public:
    virtual int calculateSize() = 0; //纯虚函数
    };

class Photo : Document{
public:
int calculateSize() override{
cout << “Photo”;
return 10;
}
};

int main() {
Photo photo;
photo.calculateSize();
return 0;
}


单例
--

### Java

public class Document {
private static final Document INSTANCE = new Document();

public static Document getInstance(){
return INSTANCE;
}

}


### C++

//懒汉版

class Document {
private:
static Document *document;
private:
Document() {};
~Document() {};
Document(const Document &);
Document &operator=(const Document &);

private:
class Deletor {
public:
~Deletor() {
if(Document::document != NULL)
delete Document::document;
}
};
static Deletor deletor;

public:
static Document *getInstance() {
if (document == NULL) {
document = new Document();
}
return document;
}
};


在程序运行结束时,系统会调用静态成员deletor的析构函数,该析构函数会删除单例的唯一实例。使用这种方法释放单例对象有以下特征:

*   在单例类内部定义专有的嵌套类。
*   在单例类内定义私有的专门用于释放的静态成员。
*   利用程序在结束时析构全局变量的特性,选择最终的释放时机。

枚举类
---
### 最后

总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;

技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关

在这我也分享一份大佬自己收录整理的 **Android学习PDF+架构视频+面试文档+源码笔记** ,还有**高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料**这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**

![](https://img-blog.csdnimg.cn/img_convert/b531917b61b3d9d8b17a781cc27e26f2.png)

![](https://img-blog.csdnimg.cn/img_convert/a38cb2da080de63903047df1e442e448.png)

料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**

[外链图片转存中...(img-HidJcFnZ-1630576471390)]

[外链图片转存中...(img-DLLiMPr1-1630576471393)]

**相信自己,没有做不到的,只有想不到的**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值